package dessin;

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.awt.image.*;

public class TestLine extends JPanel{
    private Color foregroundColor = Color.BLACK;

    private int l,h;
    private int a,b;

    static int dist;

    private Point2D.Double p, q;
    private Line2D.Double segment;

    // afficher est true si le segment doit etre afficher
    private boolean afficher = true;

    public TestLine(int l, int h){
	this.l = l;
	this.h = h;
	p = new Point2D.Double(((double)l)/5, ((double)h)/4); 
	q = new Point2D.Double(((double)l)*4/5, ((double)h)*5/6); 
	segment = new Line2D.Double(p,q);
	setPreferredSize(new Dimension(l,h));
	setMaximumSize(new Dimension(l,h));


	// si on clique a proximiter du segment alors il sera efface
	addMouseListener(new MouseAdapter(){
		public void mousePressed(MouseEvent e){
		    a = e.getX(); b = e.getY();
		    if(segment.ptSegDist(a,b)< dist){
			afficher = false;
			repaint();
		    }
		    else
			System.out.println("garder");
		}
	    });

    }// fin de constructeur
    


    protected void paintComponent(Graphics g){
	//	super.paintComponent(g);
	Graphics2D g2 = (Graphics2D)g;	
	g2.clearRect(0,0,getWidth(),getHeight());
	if(afficher)
	    g2.draw(segment);
    }

    private static void createGUI(){
	final TestLine table = new TestLine(500,500);

	JPanel ext = new JPanel();
	ext.setBorder(BorderFactory.createCompoundBorder(
		        BorderFactory.createEmptyBorder(10,10,10,10), 
	                BorderFactory.createBevelBorder(BevelBorder.RAISED))
		      );
	ext.setLayout(new BorderLayout());
	ext.add(table,BorderLayout.CENTER);
	ext.setMaximumSize(ext.getPreferredSize());

	Box box = Box.createHorizontalBox();
	box.add(Box.createHorizontalGlue());
	box.add(ext);
	box.add(Box.createHorizontalGlue());

	final JFrame frame = new JFrame();
	frame.setContentPane(box);



	/**************************************************************
	 * construct a JMenuBar
	 *************************************************************/
	JMenuBar bar = new JMenuBar();


	/********************************************************
	 *   menu File
	 *******************************************************/
	JMenu menu = new JMenu("File");

	/************************************************************
	 *    menuItem  Quit
	 *    avec un mnemonic Q
	 *    et un accelerateur   Ctrl-Q
	 ***********************************************************/
	JMenuItem menuItem = new JMenuItem("Quit");
	menuItem.setMnemonic(KeyEvent.VK_Q);
	menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_DOWN_MASK));
	menuItem.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
		    System.exit(0);
		}
	    });
	menu.add(menuItem);

	/************************************************************************
	 *   menuItem Redessiner
	 ***********************************************************************/
	JMenuItem open = new JMenuItem("Redessiner");
	open.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
		    table.afficher = true;
		    table.repaint();
		}
	    });
	menu.add(open);
	bar.add(menu);
	frame.setJMenuBar(bar);



	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	frame.pack();//frame.show();
	frame.setVisible(true);
    }

    public static void main(String[] args){
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
	if(args.length == 0) 
	    dist = 5;
	else
	    dist = Integer.parseInt(args[0]);
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createGUI();
            }
        });
    }
}



